package pro1.前缀和.t724;

import java.util.Arrays;

/**
 * @Author xingyu Xue
 * @Date 2024/2/14 21:25
 *
 * 做出来了！！！
 * 纯自己做的！！！
 */
public class 寻找数组的中心下标 {
}
class Solution {
    //定义前缀和数组
    int[] preSum;
    public int pivotIndex(int[] nums) {
        int n=nums.length;
        preSum=new int[n+1];
        for (int i = 0; i < n; i++) {
            preSum[i+1]=preSum[i]+nums[i];
        }
        //遍历前缀和数组
        for (int i = 1; i < preSum.length; i++) {
            //preSum[preSum.length]-preSum[i] 这个差值表示i右边数的和
            //这个等于0 说明 右边为0 且在第一位的话 返回0
           if( i==1 & preSum[preSum.length-1]-preSum[i] ==0  ) return 0;

           if (  preSum[i-1]== preSum[preSum.length-1]-preSum[i]) return i-1;
        }
        return -1;

    }
}

/**
 * 官方给的前缀和做法
 */
class Solution2 {
    public int pivotIndex(int[] nums) {
        int total = Arrays.stream(nums).sum();
        int sum = 0;
        for (int i = 0; i < nums.length; ++i) {
            if (2 * sum + nums[i] == total) {
                return i;
            }
            sum += nums[i];
        }
        return -1;
    }
}

